package com.changli04.date.JDK8;

import org.junit.Test;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

public class DateTest {
    @Test
    public void test() {
//        Date类 具有缺陷性
        /*
            - 可变性:像日期和时间这样的类应该是不可变的。
            - 偏移性:Date中的年份是从1900开始的，而月份都从0开始格式化
            - 格式化只对Date有用，Calendar则不行。
            - 此外，它们也不是线程安全的;不能处理闰秒等
        *
        *
        *
        * */
        Calendar calendar = Calendar.getInstance();
        //可变性  可以设置时间
        calendar.set(2015, Calendar.JANUARY, 1);
        //偏移性
        Date date1 = new Date (2015, Calendar.JANUARY, 1);//year 从1900开始 月份从0开始 具有偏移性
        System.out.println(date1);
        //SimplyDateFormat  只针对于 Date


    }

    @Test
    //新的时间API
    public void test2() {

        //now 方法
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(localDateTime);



    }
    @Test
    public void test3() {
        //of()方法


        LocalDate localDate1 = LocalDate.of(2023,10,1);
        LocalTime localTime1 = LocalTime.of(23,11);
        LocalDateTime localDateTime1 = LocalDateTime.of(2023,10,1,1,1);
        System.out.println(localDate1);
        System.out.println(localTime1);
        System.out.println(localDateTime1);
        //无偏移性


    }
    @Test
    public void test4() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//          yyyy/MM/dd HH:mm:ss
        LocalDateTime localDateTime = LocalDateTime.now();
        String dateString = localDateTime.format(formatter);
        System.out.println(dateString);


    }
}
